<?php
/*
	插件页面op增删查改
*/
defined('BY_JYA') or exit('error');
global $_RQ,$_AR;
$_RQ['op']=$_RQ['op']?$_RQ['op']:'list';
$return=array();
if($_RQ['page_id']){
	$_SESSION['page_id']=intval($_RQ['page_id']);
}
if(!$_SESSION['page_id']){
	exi('请先选择页面！','error');
}
$params=array(
	'page_id'=>$_SESSION['page_id'],
	'plugin_id'=>$_SESSION['plugin_id']
);
if($_RQ['op']=='list'){
	$result=cloud_request('plugin.page_op.list',$params);
	$htmls=array(
		'type'=>'list',
		'tabs'=>array(
			array('op'=>'list','title'=>'页面动作列表'),
		),
		'list'=>array('data'=>'list','list'=>array(
			array('name'=>'name','title'=>'动作标识','type'=>'string'),
			array('name'=>'title','title'=>'动作名称','type'=>'string'),
		)),
		'search_one'=>array('name'=>'title'),
	);
	$result['htmls']=$htmls;
	exi($result);
}
if($_RQ['op']=='edit'){
	$id=intval($_RQ['id']);
	if($id){
		$params['id']=$id;
	}
	$result=cloud_request('plugin.page_op.edit',$params);
	$htmls=array(
		'type'=>'edit',
		'post'=>'post',
		'desc'=>'设计页面动作',
		'tabs'=>array(
			'0'=>array('op'=>'list','title'=>'页面动作列表'),
			'1'=>array('op'=>'edit','title'=>'页面动作设计'),
		),
		'edit'=>array(
			array('type'=>'string','title'=>'动作标识','name'=>'name', 'help'=>'动作标识，支持字母、数字、大小写，必须以字母开头。且不能和已有功能标识重复' ),
			array('type'=>'string','title'=>'动作名称','name'=>'title' ),
			array('type'=>'radio','title'=>'动作类型','name'=>'type','options'=>'types' ),
			array('type'=>'select','title'=>'指定主数据表','name'=>'table','options'=>'tables','show'=>array('type',array(1,2,3,4,5,6))),
			//下面开始为列表展示类编辑项
			array('type'=>'string','title'=>'每页显示数据条数','name'=>'psize','show'=>array('type',1)),
			array('type'=>'switch','title'=>'设为主op','name'=>'is_main' , 'help'=>'设为主op之后，如果访问页面未指定op，则执行该动作'),
			array('type'=>'switch','title'=>'显示删除按钮','name'=>'del','show'=>array('type',1), 'help'=>''),
			array('type'=>'select','title'=>'指定删除动作','name'=>'del_op','show'=>array('del',1), 'options'=>'ops'),
			array('type'=>'switch','title'=>'显示编辑按钮','name'=>'edit','show'=>array('type',1), 'help'=>''),
			array('type'=>'select','title'=>'指定编辑动作','name'=>'edit_op','show'=>array('edit',1), 'options'=>'ops'),
			array(
				'type'=>'array',
				'name'=>'search_fields',
				'title'=>'筛选项管理',
				'show'=>array('type',1),
				'add_tip'=>'添加一个筛选项',
				'list'=>array(
					array('type'=>'select','name'=>'id','title'=>'参数标识','options'=>'tables[pagedata.item.table].fields','option_title'=>'name'),
					array('type'=>'select','name'=>'id','title'=>'参数名称','options'=>'tables[pagedata.item.table].fields','option_title'=>'title'),
				),'details'=>array(
					array('type'=>'select','name'=>'id','title'=>'选择字段','options'=>'tables[pagedata.item.table].fields'),
				)
			),
			array(
				'type'=>'array',
				'name'=>'list',
				'title'=>'列表头部设置',
				'show'=>array('type',1),
				'add_tip'=>'添加一列',
				'list'=>array(
					//array('type'=>'string','name'=>'name','title'=>'字段标识'),
					array('type'=>'string','name'=>'title','title'=>'列名'),
				),'details'=>array(
					array('type'=>'string','name'=>'title','title'=>'列名','help'=>'设置列名，列名将作为表头'),
					//array('type'=>'radio','name'=>'type','title'=>'数据排列方式','options'=>'list_types','help'=>'设置当该列有多项数据需要显示时，数据排列方式'),
				)
			),
			array(
				'type'=>'array',
				'name'=>'list_fields',
				'title'=>'列表数据设置（请先设置好列表列数再设置本项，以免出错）',
				'show'=>array('type',1),
				'add_tip'=>'添加一个数据',
				'list'=>array(
					array('type'=>'radio','name'=>'type','title'=>'数据类型','options'=>'list_field_types'),
					array('type'=>'select','name'=>'field_list','title'=>'存放列','options'=>'item.list','option_value'=>'title'),
					array('type'=>'string','name'=>'title','title'=>'名称'),
				),'details'=>array(
					array('type'=>'string','name'=>'title','title'=>'名称'),
					array('type'=>'select','name'=>'field_list','title'=>'存放列','options'=>'item.list','option_value'=>'title'),
					array('type'=>'radio','name'=>'type','title'=>'数据类型','options'=>'list_field_types'),
					array('type'=>'select','name'=>'id','title'=>'选择字段','options'=>'tables[pagedata.item.table].fields','show'=>array('type',1)),
					array('type'=>'select','name'=>'field_op','title'=>'选择字段关联op','options'=>'ops','show'=>array('type',1),'help'=>'如果需要该字段可直接编辑修改，此处需要指定处理修改请求的op'),
					array('type'=>'radio','name'=>'leixing','title'=>'按钮类型','options'=>'list_field_fenleis','show'=>array('type',2)),
					array('type'=>'select','name'=>'action','title'=>'按钮操作页面','options'=>'pages','option_value'=>'name','show'=>array('type',2)),
					array('type'=>'select','name'=>'op','title'=>'按钮操作op','options'=>'pages[pagedata.current_field.action].ops','option_value'=>'name','show'=>array('type',2)),
					array('type'=>'string','name'=>'query','title'=>'请求参数','help'=>'请求参数字符串，发起请求时作为url的一部分。系统会自动将本列数据id作为请求参数，因此id可不设置','show'=>array('type',2)),
					array('type'=>'select','name'=>'show','title'=>'关联显示','options'=>'tables[pagedata.item.table].fields','option_value'=>'name','select_title'=>'不关联','help'=>'设置是否关联特定字段值显示。如果关联，则仅当关联字段为指定值时才显示本按钮','show'=>array('type',2)),
					array('type'=>'string','name'=>'show_data','title'=>'关联字段值','help'=>'填写关联字段的字段标识和关联值，以空格隔开。示例：字段标识 值1 值2，如果设置多个字段值，标识当关联项值为多个值之一时显示本编辑项','show'=>array('type',2)),
				)
			),
			array(
				'type'=>'array',
				'name'=>'actions',
				'title'=>'操作按钮',
				'show'=>array('type',1),
				'add_tip'=>'添加一个操作按钮',
				'list'=>array(
					array('type'=>'icon','name'=>'icon','title'=>'操作图标'),
					array('type'=>'string','name'=>'title','title'=>'操作名称'),
				),'details'=>array(
					array('type'=>'icon','name'=>'icon','title'=>'操作图标'),
					array('type'=>'string','name'=>'title','title'=>'操作名称','help'=>'操作名称用于提示操作员该按钮的作用'),
					array('type'=>'radio','name'=>'type','title'=>'操作类型','options'=>'action_types'),
					array('type'=>'select','name'=>'action','title'=>'按钮操作页面','options'=>'pages','option_value'=>'name'),
					array('type'=>'select','name'=>'op','title'=>'按钮操作op','options'=>'pages[pagedata.current_field.action].ops','option_value'=>'name'),
					array('type'=>'string','name'=>'query','title'=>'请求参数','help'=>'请求参数字符串，发起请求时作为url的一部分。系统会自动将本列数据id作为请求参数，因此id可不设置'),
					array('type'=>'select','name'=>'show','title'=>'关联显示','options'=>'tables[pagedata.item.table].fields','option_value'=>'name','select_title'=>'不关联','help'=>'设置是否关联特定字段值显示。如果关联，则仅当关联字段为指定值时才显示本按钮'),
					array('type'=>'string','name'=>'show_data','title'=>'关联字段值','help'=>'填写关联字段的字段标识和关联值，以空格隔开。示例：字段标识 值1 值2，如果设置多个字段值，标识当关联项值为多个值之一时显示本编辑项'),
				)
			),
			//下面开始为表单编辑类设置项：表单编辑类需要设置表单项，表单提交合并在表单编辑动作中，不另外设置
			
			array(
				'type'=>'array',
				'name'=>'edit_fields',
				'title'=>'表单项管理',
				'show'=>array('type',2),
				'add_tip'=>'添加一个表单项',
				'list'=>array(
					array('type'=>'select','name'=>'id','title'=>'参数标识','options'=>'tables[pagedata.item.table][\'fields\']','option_title'=>'name'),
					array('type'=>'select','name'=>'id','title'=>'参数名称','options'=>'tables[pagedata.item.table][\'fields\']','option_title'=>'title'),
				),'details'=>array(
					array('type'=>'select','name'=>'id','title'=>'选择字段','options'=>'tables[pagedata.item.table][\'fields\']'),
					array('type'=>'string','name'=>'fenlei','title'=>'编辑分类','help'=>'同一个分类的参数会放在统一设置选项卡中'),
					array('type'=>'text','name'=>'help','title'=>'帮助信息','help'=>'用于提示用户输入'),
					array('type'=>'select','name'=>'show','title'=>'关联显示','options'=>'tables[pagedata.item.table].fields','option_value'=>'name','select_title'=>'不关联','help'=>'设置是否关联特定字段值显示。如果关联，则仅当关联字段为指定值时才显示本表单项'),
					array('type'=>'string','name'=>'show_data','title'=>'关联字段值','help'=>'填写关联字段的字段标识和关联值，以空格隔开。示例：字段标识 值1 值2，如果设置多个字段值，标识当关联项值为多个值之一时显示本编辑项'),
				)
			),
			//下面开始为删除数据类设置项：删除数据需要设置的内容，主数据表，是否同时删除子表、附表数据
			array('type'=>'switch','name'=>'del_tree','show'=>array('type',4),'title'=>'是否同时删除子表、附表数据'),
			//下面开始为详情展示类设置项
			array(
				'type'=>'array',
				'name'=>'look_fields',
				'title'=>'数据展示管理',
				'show'=>array('type',5),
				'add_tip'=>'添加一个数据',
				'list'=>array(
					array('type'=>'select','name'=>'id','title'=>'字段标识','options'=>'tables[pagedata.item.table][\'fields\']','option_title'=>'name'),
					array('type'=>'select','name'=>'id','title'=>'字段名称','options'=>'tables[pagedata.item.table][\'fields\']','option_title'=>'title'),
				),'details'=>array(
					array('type'=>'select','name'=>'id','title'=>'选择字段','options'=>'tables[pagedata.item.table][\'fields\']'),
					array('type'=>'string','name'=>'fenlei','title'=>'编辑分类','help'=>'同一个分类的字段会放在同一选项卡中展示'),
				)
			),
			//下面开始为修改数据类设置项，修改数据需要设置主数据表，需要设置允许修改字段
			array(
				'type'=>'array',
				'name'=>'change_fields',
				'title'=>'修改数据管理',
				'show'=>array('type',6),
				'add_tip'=>'添加一个字段',
				'list'=>array(
					array('type'=>'select','name'=>'id','title'=>'字段标识','options'=>'tables[pagedata.item.table][\'fields\']','option_title'=>'name'),
					array('type'=>'select','name'=>'id','title'=>'字段名称','options'=>'tables[pagedata.item.table][\'fields\']','option_title'=>'title'),
				),'details'=>array(
					array('type'=>'select','name'=>'id','title'=>'选择字段','options'=>'tables[pagedata.item.table][\'fields\']'),
				)
			),
			//其他op代码由开发者自行编写，系统只生成op框，具体代码逻辑由开发者编写
		)
	);
	$result['htmls']=$htmls;
	exi($result);
}
if($_RQ['op']=='post'){
	$post=get_postdata();
	$params['postdata']=base64_encode(json_encode($post));
	$result=cloud_request('plugin.page_op.post',$params);
	exi($result);
}
if($_RQ['op'] == 'del'){
	if($_RQ['id']){
		$params['id']=intval($_RQ['id']);
	}
	if($_RQ['del']){
		$params['del']=trim($_RQ['del']);
	}
	$result=cloud_request('plugin.page_op.del',$params);
	exi($result);
}